package ruifight.member.controller.common;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import net.coobird.thumbnailator.Thumbnails;
import ruifight.member.util.CommonUtil;

@Controller
@RequestMapping("/interface")
public class FileController {

	private static final Logger logger = LoggerFactory.getLogger(FileController.class);

	/**     
	* 方法描述：   将流转换成字符串
	* @param file
	* @return 
	* 创建人：浅缘0419   
	* 创建时间：2019年1月22日 上午10:44:08              
	 * @throws IOException 
	*/
	@RequestMapping("/getFileOfBase64")
	@ResponseBody
	public Map<String,Object> getFileOfBase64(@RequestParam("file") MultipartFile file,HttpServletRequest request) throws IOException{
		Map<String,Object> map = new HashMap<String,Object>();
	 	 // 获取文件名
        String fileName = file.getOriginalFilename();
        // 获取文件后缀
        String prefix=fileName.substring(fileName.lastIndexOf("."));
        // 用uuid作为文件名，防止生成的临时文件重复
        String uuid = CommonUtil.getUUID();
        String filePath = CommonUtil.getPropertiesParam("photoPath");
        FileOutputStream out =null;
		try {
	        File photoFileDir = new File(filePath);
	        if(!photoFileDir.exists()){    
	        	photoFileDir.mkdirs();    
	        } 
	        File photoFile = new File(filePath+"/"+uuid+prefix);
	        out = new FileOutputStream(photoFile);
			Thumbnails.of(file.getInputStream()).scale(1f).outputQuality(0.5f).toOutputStream(out);
	        out.flush();
			map.put("msg", uuid+prefix);
			map.put("state", 1);
		}catch(Exception e) {
			e.printStackTrace();
			map.put("state", 0);
			map.put("msg", "系统崩溃了请稍后再尝试~");
		}finally{
			try{
				out.close();
			}catch(Exception e){
				out =null;
			}
		}
		return map;
	}
	/**     
	* 方法描述：   将流转换成字符串
	* @param file
	* @return 
	* 创建人：浅缘0419   
	* 创建时间：2019年1月22日 上午10:44:08              
	 * @throws IOException 
	*/
	@RequestMapping("/getVideoFileOfBase64")
	@ResponseBody
	public Map<String,Object> getVideoFileOfBase64(@RequestParam("file") MultipartFile file,HttpServletRequest request) throws IOException{
		Map<String,Object> map = new HashMap<String,Object>();
	 	 // 获取文件名
        String fileName = file.getOriginalFilename();
        // 获取文件后缀
        String prefix=fileName.substring(fileName.lastIndexOf("."));
        // 用uuid作为文件名，防止生成的临时文件重复
        String uuid = CommonUtil.getUUID();
        String filePath = CommonUtil.getPropertiesParam("photoPath");
        FileOutputStream out =null;
		try {
	        File photoFile = new File(filePath);
	        if(!photoFile.exists()){    
	        	photoFile.mkdirs();    
	        } 
	        out = new FileOutputStream(filePath+"/"+uuid+prefix);
	        out.write(file.getBytes());
	        out.flush();
			map.put("msg", uuid+prefix);
			map.put("state", 1);
		}catch(Exception e) {
			e.printStackTrace();
			map.put("state", 0);
			map.put("msg", "系统崩溃了请稍后再尝试~");
		}finally{
			try{
				out.close();
			}catch(Exception e){
				out =null;
			}
		}
		return map;
	}
	
	/**     
	* 方法描述：   删除流
	* @param files 
	* 创建人：浅缘0419   
	* 创建时间：2019年1月22日 上午11:22:08              
	*/
	private  void deleteFile(File... files) {  
        for (File file : files) {  
            if (file.exists()) {  
                file.delete();  
            }  
        }  
    }
}
